Many data processing systems include an encoded channel that is made up of electronic components that enable components, such as processor(s), memory(ies) and the like, to exchange information at relatively high data rates. Typically, an encoded channel will be exchange data according to a protocol. The protocol specifies how the data is to be encoded. One such communications protocol facilitates high-speed serial communication across serial links. Its four main advantages over other protocols are its low resource requirements (leading to inexpensive implementations in digital hardware), its scalability (the protocol runs at many different speeds and can accommodate the use of multiple transceivers), its efficiency (the protocol does not consume a lot of bandwidth for control overhead), and its flexibility. Encoding is important because it imparts on the data properties that make it easier to recover by the receiving component. Such data properties include finding byte boundaries in a serial stream, preventing data dependant jitter, and minimizing the generation of strong electric fields at specific frequencies.
In advanced systems, the amount of data being exchanged is large. In some situations, it may be very difficult to exchange information using a protocol economically, due in part to high resource costs. The bulk of the cost of implementing conventional protocols is due to byte shifting and byte storage operations and the quantity of framing characters required by the protocol.
Consequently, there is a need for new techniques for encoding data for transmission over high-speed channels.